package com.finaOutorderProvider.service.impl;

import com.alibaba.fastjson.JSONObject;
import com.finaOutorderProvider.mapper.FinaOutorderMapper;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import entity.Outorder;
import entity.Outorderinfo;
import entity.ResponseMessage;
import entity.StatusCode;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import service.financial.FinaOutorderService;

import java.util.List;
import java.util.Map;

/**
 * 财务门店订单service
 * @author oahner
 * @create 2022-04-19 14:17
 */
@Service
public class FinaOutorderServiceImpl implements FinaOutorderService {

    private Logger logger = Logger.getLogger(getClass());

    @Autowired
    private FinaOutorderMapper mapper;

    /**
     * 获取门店订单列表
     * @param finaOutorderPage
     * @return
     */
    @Override
    public ResponseMessage getFinaOutorder(Map<String, Object> finaOutorderPage) {
        logger.info("FinaOutorderServiceImpl getFinaOutorder params:finaOutorderPage="+finaOutorderPage);
        ResponseMessage msg = new ResponseMessage();
        msg.setFlag(false);
        msg.setCode(StatusCode.ERROR);
        Outorder outorder = null;
        Integer pageNum = 1;
        //拆解Map，分别获取订单对象和分页参数
        if(null!=finaOutorderPage.get("finaOutorder")){
            outorder = JSONObject.parseObject(JSONObject.toJSONString(finaOutorderPage.get("finaOutorder")), Outorder.class);

        }
        if(null!=finaOutorderPage.get("pageNum") && (Integer)finaOutorderPage.get("pageNum")>0){
            pageNum = (Integer) finaOutorderPage.get("pageNum");
        }
        try {
            PageHelper.startPage(pageNum,5);
            List<Outorder> finaOutorder = mapper.selFinaOutorder(outorder);
            if(finaOutorder.size()>0){
                PageInfo<Outorder> pageOrder = new PageInfo<Outorder>(finaOutorder);
                msg.setCode(StatusCode.OK);
                msg.setFlag(true);
                msg.setData(pageOrder);
                msg.setMessage("get finaOutorder success");
                logger.debug("FinaOutorderServiceImpl getFinaOutorder success result:msg="+msg);
            }else{
                msg.setMessage("get finaOutorder empty");
                logger.debug("FinaOutorderServiceImpl getFinaOutorder empty result:msg="+msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setMessage("get finaOutorder error");
            logger.error("FinaOutorderServiceImpl getFinaOutorder error param:msg="+msg);
        }
        return msg;
    }

    /**
     * 获取门店订单详情
     * @param finaOutorderinfo
     * @return
     */
    @Override
    public ResponseMessage getFinaOutorderInfo(Outorderinfo finaOutorderinfo) {
        logger.info("FinaOutorderServiceImpl getFinaOutorderInfo params:finaOutorderinfo="+finaOutorderinfo);
        ResponseMessage msg = new ResponseMessage();
        msg.setFlag(false);
        msg.setCode(StatusCode.ERROR);
        try {
            if(null != finaOutorderinfo && null!=finaOutorderinfo.getoId() && !"".equals(finaOutorderinfo.getoId())){
                List<Outorderinfo> finaOutorderinfos = mapper.selFinaOutorderInfo(finaOutorderinfo);
                if(finaOutorderinfos.size()>0){
                    msg.setCode(StatusCode.OK);
                    msg.setFlag(true);
                    msg.setData(finaOutorderinfos);
                    msg.setMessage("get finaOutorderinfo success");
                    logger.debug("FinaOutorderServiceImpl getFinaOutorderInfo success result:msg="+msg);
                }else{
                    msg.setMessage("get finaOutorderinfo empty");
                    logger.debug("FinaOutorderServiceImpl getFinaOutorderInfo empty result:msg="+msg);
                }
            }else{
                msg.setMessage("get finaOutorderinfo fail");
                logger.debug("FinaOutorderServiceImpl getFinaOutorderInfo fail result:msg="+msg);
            }
        } catch (Exception e) {
            e.printStackTrace();
            msg.setMessage("get finaOutorderinfo error");
            logger.error("FinaOutorderServiceImpl getFinaOutorderInfo error param:msg="+msg);
        }
        return msg;
    }
}
